package com.vavr.checkincms.service;

import java.util.List;
import com.vavr.checkincms.domain.bo.MeetingInfoBO;
import com.vavr.checkincms.domain.data.MeetingInfoDO;
import com.vavr.checkincms.domain.dto.MeetingConfigDTO;
import com.vavr.checkincms.domain.dto.MeetingInfoDTO;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * MeetingInfoService
 *
 * @author <a href="mailto:taofangf@gmail.com">Fangtao</a>
 * @since 2024.08
 */
public interface MeetingInfoService {
    /**
     * 添加会议信息
     *
     * @param meetingInfo {@link MeetingInfoDO}
     * @return 添加条数
     */
    int addMeetingInfo(MeetingInfoDO meetingInfo);

    /**
     * 根据会议ID查询会议信息
     *
     * @param meetingId 会议ID
     * @return {@link MeetingInfoDTO}
     */
    MeetingInfoDTO getMeetingInfoById(Integer meetingId);

    /**
     * 获取会议列表
     *
     * @return List<MeetingInfoDO>
     */
    List<MeetingInfoDO> getMeetingInfoList();

    /**
     * 查询会议配置(根据会议id)
     *
     * @param meetingId {@link String}
     * @return List<MeetingConfigDTO>  会议配置信息
     */
    List<MeetingConfigDTO> getMeetingConfig(String meetingId);

    /**
     * 查询全部会议配置(根据配置id)
     *
     * @param configId {@link String}
     * @return List<MeetingConfigDTO>  会议配置信息
     */
    List<MeetingConfigDTO> queryMeetingConfigByConfigId(String configId);

    /**
     * 获取当前角色可以查看的会议列表
     *
     * @param bo {@link MeetingInfoBO}
     * @return List<MeetingInfoDTO>  会议配置信息
     */
    List<MeetingInfoDTO> getMeetingList(MeetingInfoBO bo);

    /**
     * 获取当前角色可以查看的会议列表
     *
     * @param bo {@link MeetingInfoBO}
     * @return List<MeetingInfoDTO>  会议配置信息
     */
    void getMeetingUserInfo(MeetingInfoBO bo, HttpServletResponse response, HttpServletRequest request);
}
